// IPC API 服务 - 封装与主进程的通信
class ApiService {
    constructor() {
        this.isAvailable = typeof window !== 'undefined' && window.electronAPI;
    }

    /**
     * 检查是否为 Electron 环境
     */
    isElectron() {
        return this.isAvailable;
    }

    /**
     * Claude Code 相关 API
     */
    async checkClaudeCode() {
        if (!this.isElectron()) {
            throw new Error('仅支持在 Electron 环境中运行');
        }
        return await window.electronAPI.invoke('claude:check-code');
    }

    async installClaudeCode() {
        if (!this.isElectron()) {
            throw new Error('仅支持在 Electron 环境中运行');
        }
        return await window.electronAPI.invoke('claude:install-code');
    }

    async validateApiKey(apiKey) {
        if (!this.isElectron()) {
            throw new Error('仅支持在 Electron 环境中运行');
        }
        return await window.electronAPI.invoke('claude:validate-api-key', apiKey);
    }

    async executeTask(apiKey, task, model = 'claude-3-sonnet-20240229') {
        if (!this.isElectron()) {
            throw new Error('仅支持在 Electron 环境中运行');
        }
        return await window.electronAPI.invoke('claude:execute-task', { apiKey, task, model });
    }

    /**
     * 存储相关 API
     */
    async saveApiKey(apiKey) {
        if (!this.isElectron()) {
            throw new Error('仅支持在 Electron 环境中运行');
        }
        return await window.electronAPI.invoke('storage:save-api-key', apiKey);
    }

    async loadApiKey() {
        if (!this.isElectron()) {
            throw new Error('仅支持在 Electron 环境中运行');
        }
        return await window.electronAPI.invoke('storage:load-api-key');
    }

    async getTaskHistory(limit = 50) {
        if (!this.isElectron()) {
            return { success: true, history: [] };
        }
        return await window.electronAPI.invoke('storage:get-task-history', limit);
    }

    async clearCache() {
        if (!this.isElectron()) {
            throw new Error('仅支持在 Electron 环境中运行');
        }
        return await window.electronAPI.invoke('storage:clear-cache');
    }

    /**
     * 应用相关 API
     */
    async getAppInfo() {
        if (!this.isElectron()) {
            return {
                name: 'CCloud AI Agent',
                version: '1.0.0',
                platform: 'web'
            };
        }
        return await window.electronAPI.invoke('app:get-info');
    }
}

// 创建单例实例
const apiService = new ApiService();

module.exports = apiService;
